package geral.manager;

import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sgc.entities.geral.UnidadeMedida;
import br.com.sgc.session.GenericSession;

/**
 * Manager responsável por controlar as ações para unidades de medida.
 * 
 * @author stevens
 * 
 */

@Named
@ConversationScoped
public class UnidadeMedidaManager extends GenericManager implements		Serializable {

	private static final long serialVersionUID = 2735070488721041136L;

	@Inject
	private UtilManager utilManager;

	@EJB
	private GenericSession<UnidadeMedida> unidadeMedidaSession;

	private UnidadeMedida unidadeMedida = new UnidadeMedida();

	private List<UnidadeMedida> list = new ArrayList<UnidadeMedida>();

	private Boolean showPanelCadastro;

	public String list() {
		list = unidadeMedidaSession.findAll(UnidadeMedida.class, utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId());
		showPanelCadastro = false;
		return "formUnidadeMedida";
	}

	public String prepareSave() {
		showPanelCadastro = true;
		unidadeMedida = new UnidadeMedida();
		return "formUnidadeMedida";
	}

	public String save() {
		try {
			unidadeMedida.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			unidadeMedidaSession.save(unidadeMedida);
			FacesUtil.mensInfo("Unidade de Medida salva com sucesso");
			unidadeMedida = new UnidadeMedida();
			return list();
		} catch (Exception e) {
			e.printStackTrace();
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public String prepareUpdate() {
		unidadeMedida = unidadeMedidaSession.findById(UnidadeMedida.class,unidadeMedida.getId(), true);
		showPanelCadastro = true;
		return "formTipoProduto";
	}

	public String update() {
		try {
			unidadeMedida.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			unidadeMedidaSession.update(unidadeMedida);
			unidadeMedida = new UnidadeMedida();
			FacesUtil.mensInfo("Unidade de Medida atualizada com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public UnidadeMedida getUnidadeMedida() {
		return unidadeMedida;
	}

	public void setUnidadeMedida(UnidadeMedida unidadeMedida) {
		this.unidadeMedida = unidadeMedida;
	}

	public List<UnidadeMedida> getList() {
		return list;
	}

	public void setList(List<UnidadeMedida> list) {
		this.list = list;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}
}
